home *** CD-ROM | disk | FTP | other *** search
/ Gekikoh Dennoh Club 7 / Gekikoh Dennoh Club Vol. 7 (Japan).7z / Gekikoh Dennoh Club Vol. 7 (Japan) (Track 01).bin / tools / bootsala / bootsala.s < prev    next >
Text File  |  1998-01-01  |  15KB  |  618 lines

  1. *========================================================================
  2. *    bootsala.s
  3. *            Written by Igarashi
  4. *========================================================================
  5.         .cpu    68000
  6. *========================================================================
  7.         .include    doscall.mac
  8.         .include    iocscall.mac
  9. *========================================================================
  10.         .text
  11.         .even
  12. *========================================================================
  13. entry:
  14.         lea.l    inisp(pc),sp
  15.  
  16.         bsr    initdosvec    *for SETPDB
  17.  
  18.         movea.l    a0,a5
  19.  
  20.         bsr    offmem        *bss以降のメモリブロックを解放
  21.         bsr    puttitle    *タイトル表示
  22.         bsr    chkarg
  23.  
  24.         bsr    chkver
  25.                 *SALA.Xをロード
  26.         pea.l    0.w        *環境 (親と同じ)
  27.         pea.l    (sp)        *コマンドライン (なし)
  28.         pea.l    salafn(pc)    *実行ファイル名 ('SALA.X')
  29.         move.w    #1,-(sp)    *EXEC_LOADONLY
  30.         DOS    __EXEC
  31.         lea.l    14(sp),sp
  32.         tst.l    d0
  33.         bmi    loaderror
  34.  
  35.                 *ロードしたままエラー終了すると
  36.                 *まずいらしいので
  37.         pea.l    16(a5)        *SIZEofMEMPTR
  38.         DOS    __SETPDB
  39.         addq.l    #4,sp
  40.  
  41.         bsr    patch1        *パッチ1
  42.         bsr    patch2        *パッチ2
  43.         bsr    flushcache    *MPU キャッシュのフラッシュ
  44.  
  45.         bsr    setspint    *スプリアス割り込みを殺す
  46.  
  47.                 *SALA.Xにプロセス管理を戻す
  48.         pea.l    16(a0)        *SIZEofMEMPTR
  49.         DOS    __SETPDB
  50.         addq.l    #4,sp
  51.  
  52.         bsr    savemfp
  53.         move.l    a4,-(sp)    *スタートアドレス
  54.         move.w    #4,-(sp)    *EXEC_EXECONLY
  55.         DOS    __EXEC
  56.         addq.l    #6,sp
  57.         move.l    d0,-(sp)
  58.         bsr    rstrmfp
  59.         tst.l    (sp)+
  60.         bmi    execerror
  61.  
  62.         bsr    resetspint    *スプリアス割り込みを復帰
  63.  
  64.         DOS    __EXIT
  65.  
  66. *------------------------------------------------------------------------
  67. nfounderror:    lea.l    nfoundmes(pc),a0
  68.         bra    errorexit
  69. vererror:    lea.l    vererrmes(pc),a0
  70.         bra    errorexit
  71. vererror2:    lea.l    vererrmes2(pc),a0
  72.         bra    errorexit
  73. loaderror:
  74.         lea.l    loaderrmes(pc),a0
  75.         bra    errorexit
  76. execerror:
  77.         lea.l    execerrmes(pc),a0
  78.         bra    errorexit
  79. usage:
  80.         lea.l    usgmes(pc),a0
  81. errorexit:
  82.         move.w    #2,-(sp)    *STDERR
  83.         pea.l    (a0)
  84.         DOS    __FPUTS
  85.         addq.l    #6,sp
  86.  
  87.         move.w    #1,-(sp)
  88.         DOS    __EXIT2
  89.  
  90. *------------------------------------------------------------------------
  91. *    MFPの辻褄合わせ
  92. *    TACRのみセーブしているけど、他にもあるかも…
  93. *------------------------------------------------------------------------
  94. savemfp:
  95. SAVREGS        reg    d0-d1/a0-a1
  96.         movem.l    SAVREGS,-(sp)
  97.         lea.l    $e88019,a1    *TACR
  98.         IOCS    __B_BPEEK
  99.         move.b    d0,mfpbuf
  100.         movem.l    (sp)+,SAVREGS
  101.         rts
  102. rstrmfp:
  103. SAVREGS        reg    d0-d1/a0-a1
  104.         movem.l    SAVREGS,-(sp)
  105.         lea.l    $e88019,a1    *TACR
  106.         move.b    mfpbuf,d1
  107.         IOCS    __B_BPOKE
  108.         movem.l    (sp)+,SAVREGS
  109.         rts
  110.  
  111. *------------------------------------------------------------------------
  112. *    コマンドライン解析
  113. *        in:    a2.l    コマンドライン
  114. *        out:    none
  115. *        broken:    none
  116. *------------------------------------------------------------------------
  117. chkarg:
  118. SAVREGS        reg    d0-d4/a0/a2
  119.         movem.l    SAVREGS,-(sp)
  120.         lea.l    dipsw(pc),a0
  121. DIPSW0        reg    d2
  122. DIPSW1        reg    d3
  123. DIPSW2        reg    d4
  124.         move.b    0(a0),DIPSW0
  125.         move.b    1(a0),DIPSW1
  126.         move.b    2(a0),DIPSW2
  127.  
  128.         addq.l    #1,a2
  129. arglp:        move.b    (a2)+,d0
  130.         beq    chkargretn
  131.         cmpi.b    #' ',d0
  132.         beq    arglp
  133.         cmpi.b    #'    ',d0
  134.         beq    arglp
  135.         cmpi.b    #'-',d0
  136.         bne    usage
  137.         move.b    (a2)+,d0
  138.         ori.b    #$20,d0
  139.         cmpi.b    #'v',d0
  140.         beq    vopt
  141.         move.b    (a2)+,d1
  142.         bsr    gethex
  143.         bmi    usage
  144.         cmpi.b    #'c',d0
  145.         beq    copt
  146.         cmpi.b    #'t',d0
  147.         beq    topt
  148.         cmpi.b    #'p',d0
  149.         beq    popt
  150.         cmpi.b    #'l',d0
  151.         beq    lopt
  152.         cmpi.b    #'x',d0
  153.         beq    xopt
  154.         cmpi.b    #'d',d0
  155.         beq    dopt
  156.         cmpi.b    #'s',d0
  157.         beq    sopt
  158.         cmpi.b    #'o',d0
  159.         beq    oopt
  160.         cmpi.b    #'m',d0
  161.         beq    mopt
  162.         cmpi.b    #'g',d0
  163.         beq    gopt
  164.  
  165.         bra    usage
  166. vopt:        st.b    extend
  167.         bra    arglp
  168. copt:        cmpi.b    #15,d1
  169.         bhi    usage
  170.         andi.b    #%1111_0000,DIPSW0
  171.         or.b    d1,DIPSW0
  172.         bra    arglp
  173. topt:        cmpi.b    #1,d1
  174.         bhi    usage
  175.         ror.b    #1,d1
  176.         andi.b    #%0111_1111,DIPSW0
  177.         or.b    d1,DIPSW0
  178.         bra    arglp
  179. popt:        cmpi.b    #3,d1
  180.         bhi    usage
  181.         andi.b    #%1111_1100,DIPSW1
  182.         or.b    d1,DIPSW1
  183.         bra    arglp
  184. lopt:        cmpi.b    #1,d1
  185.         bhi    usage
  186.         rol.b    #2,d1
  187.         andi.b    #%1111_1011,DIPSW1
  188.         or.b    d1,DIPSW1
  189.         bra    arglp
  190. xopt:        cmpi.b    #3,d1
  191.         bhi    usage
  192.         rol.b    #3,d1
  193.         andi.b    #%1110_0111,DIPSW1
  194.         or.b    d1,DIPSW1
  195.         bra    arglp
  196. dopt:        cmpi.b    #3,d1
  197.         bhi    usage
  198.         ror.b    #3,d1
  199.         andi.b    #%1001_1111,DIPSW1
  200.         or.b    d1,DIPSW1
  201.         bra    arglp
  202. sopt:        cmpi.b    #1,d1
  203.         bhi    usage
  204.         ror.b    #1,d1
  205.         andi.b    #%0111_1111,DIPSW1
  206.         or.b    d1,DIPSW1
  207.         bra    arglp
  208. oopt:        cmpi.b    #1,d1
  209.         bhi    usage
  210.         ror.b    #3,d1
  211.         andi.b    #%1101_1111,DIPSW2
  212.         or.b    d1,DIPSW2
  213.         bra    arglp
  214. mopt:        cmpi.b    #1,d1
  215.         bhi    usage
  216.         ror.b    #1,d1
  217.         andi.b    #%0111_1111,DIPSW2
  218.         or.b    d1,DIPSW2
  219.         bra    arglp
  220. gopt:        cmpi.b    #3,d1
  221.         bhi    usage
  222.         move.b    d1,crtmode
  223.         bra    arglp
  224. chkargretn:
  225.         move.b    DIPSW0,(a0)+
  226.         move.b    DIPSW1,(a0)+
  227.         move.b    DIPSW2,(a0)+
  228.         movem.l    (sp)+,SAVREGS
  229.         rts
  230.  
  231. *------------------------------------------------------------------------
  232. gethex:
  233.         cmpi.b    #'0',d1
  234.         bcs    5f
  235.         cmpi.b    #'9',d1
  236.         bhi    5f
  237.         subi.b    #'0',d1
  238.         bra    9f
  239. 5:        ori.b    #$20,d1
  240.         cmpi.b    #'a',d1
  241.         bcs    8f
  242.         cmpi.b    #'f',d1
  243.         bhi    8f
  244.         subi.b    #'a'-10,d1
  245.         bra    9f
  246. 8:        moveq.l    #-1,d1        *N=1
  247. 9:        rts
  248.  
  249. *------------------------------------------------------------------------
  250. *    SALA.X のバージョンチェック
  251. *------------------------------------------------------------------------
  252. chkver:
  253.         lea.l    -(53+1)(sp),sp    *SIZEofFILESBUF+1
  254.         move.w    #$0020,-(sp)    *ARCHIVE
  255.         pea.l    salafn(pc)
  256.         pea.l    2+4(sp)
  257.         DOS    __FILES
  258.         lea.l    10(sp),sp
  259.         tst.l    d0
  260.         bmi    nfounderror
  261.  
  262.         move.l    $16(sp),d0    *FTIME
  263.         cmpi.l    #$5f40113d,d0    *88-09-29 11:58:00
  264.         beq    @f
  265.                 *88-09-21 16:56:00というバージョンも
  266.                 *手元にあります。かれこれ8年ほど前に
  267.                 *入手した不正コピーモノなので、
  268.                 *製品版でこのタイムスタンプを持つものが
  269.                 *存在するかどうかは不明です。
  270.                 *一応、隠し機能として対応してみましたが、
  271.                 *パッチが不完全かもしれません
  272.         tst.b    extend
  273.         beq    vererror
  274.         addq.b    #1,version
  275.         cmpi.l    #$87001135,d0    *88-09-21 16:56:00
  276.         bne    vererror
  277. @@:        lea.l    53+1(sp),sp
  278.         rts
  279.  
  280. *------------------------------------------------------------------------
  281. *    パッチその1
  282. *    ワーク$f0000~$fe000をメモリブロック末尾へスライド
  283. *        in:    a0.l    沙羅曼蛇メモリ管理ブロック
  284. *        out:    none
  285. *        broken:    none
  286. *        notice:    1:MPU キャッシュのフラッシュは行わない
  287. *            2:ワークの範囲が有効かどうかはSALA.Xまかせ
  288. *------------------------------------------------------------------------
  289. patch1:
  290. SAVREGS        reg    d0-d2/a0
  291.         movem.l    SAVREGS,-(sp)
  292.  
  293.                 *ワーク先頭を$10000の倍数に整合
  294.         move.w    8(a0),d0    *pspMEMEND
  295.         subq.w    #1,d0        *d0.l = ワークの上位ワード
  296.  
  297.         lea.l    256(a0),a0    *SIZEofPSP
  298.         lea.l    patchtbl_a(pc),a1
  299.         move.b    version(pc),d1
  300.         beq    @f
  301.         lea.l    patchtbl_b(pc),a1
  302. @@:
  303.         moveq.l    #0,d1
  304.         moveq.l    #$0f,d2
  305.         bra    5f
  306. 1:        add.l    d1,a0
  307.         cmp.w    (a0),d2
  308.         bne    vererror2
  309.         move.w    d0,(a0)
  310. 5:        move.w    (a1)+,d1
  311.         bne    1b
  312. 9:        movem.l    (sp)+,SAVREGS
  313.         rts
  314.  
  315. *------------------------------------------------------------------------
  316. *    パッチその2
  317. *        in:    a0.l    沙羅曼蛇メモリ管理ブロック
  318. *        out:    none
  319. *        broken:    none
  320. *        notice:    MPUキャッシュのフラッシュは行わない
  321. *------------------------------------------------------------------------
  322. patch2:
  323. SAVREGS        reg    d0/a0-a2
  324.         movem.l    SAVREGS,-(sp)
  325.         lea.l    256(a0),a0    *SIZEofPSP
  326.                 *ディップスイッチ関連
  327.         lea.l    dipsw(pc),a1
  328.  
  329.         clr.w    d0
  330.         move.b    version(pc),d0
  331.         add.w    d0,d0
  332.         move.w    @f(pc,d0.w),d0
  333.         jsr    @f(pc,d0.w)
  334.         movem.l    (sp)+,SAVREGS
  335.         rts
  336. @@:        .dc.w    patch2_ver_a-@b
  337.         .dc.w    patch2_ver_b-@b
  338.  
  339. patch2_ver_a:
  340.         movea.l    a0,a2
  341.         adda.l    #$0212d6,a2
  342.         move.b    (a1)+,(a2)+    *
  343.         move.b    (a1)+,(a2)+    *
  344.         move.b    (a1)+,(a2)+    *}
  345.         move.w    patch2dat1(pc),$00064a+4+4+2+4(a0)
  346.                     *DOS __FILES -> moveq.l #-1,d0
  347.                 *画面モード
  348.         lea.l    patch2dat2_ver_a(pc),a1
  349.         lea.l    $000350+2+4+4+2(a0),a2
  350.         move.l    (a1)+,(a2)+    *4
  351.         move.l    (a1)+,(a2)+    *4
  352.         rts
  353.  
  354. patch2_ver_b:
  355.         movea.l    a0,a2
  356.         adda.l    #$0212f8,a2
  357.         move.b    (a1)+,(a2)+    *
  358.         move.b    (a1)+,(a2)+    *
  359.         move.b    (a1)+,(a2)+    *}
  360.         move.w    patch2dat1(pc),$00064a+4+4+2+4(a0)
  361.                     *DOS __FILES -> moveq.l #-1,d0
  362.                 *画面モード
  363.         lea.l    patch2dat2_ver_b(pc),a1
  364.         lea.l    $000350+2+4+4+2(a0),a2
  365.         move.l    (a1)+,(a2)+    *4
  366.         move.l    (a1)+,(a2)+    *4
  367.         rts
  368.  
  369. *------------------------------------------------------------------------
  370. patch2dat1:    moveq.l    #-1,d0        *2
  371. patch2dat2_ver_a:
  372. patch2dat2_ver_b:
  373.         jsr    1f.l        *6
  374.         bra.s    *+18        *2
  375.  
  376. 1:        moveq.l    #0,d1
  377.         move.b    crtmode(pc),d1
  378.         add.w    d1,d1
  379.         move.w    9f(pc,d1.w),d1
  380.         rts
  381. 9:        .dc.w    $010a,$0109,$0108,$0107
  382.  
  383. *========================================================================
  384. *    DOSコール$ff50~$ff7fのベクタを$ff80~$ffafへコピー
  385. *        in:    none
  386. *        out:    none
  387. *        broken:    none
  388. *========================================================================
  389. initdosvec:
  390. SAVREGS        reg    d0/a0-a1
  391.         movem.l    SAVREGS,-(sp)
  392. .if 0
  393.         DOS    __VERNUM
  394.         cmpi.w    #$020f,d0
  395.         bcc    9f
  396. .endif
  397.         pea.l    0.w
  398.         DOS    __SUPER
  399.         move.l    d0,(sp)
  400.         lea.l    $1800+$50*4.w,a0
  401.         lea.l    $1800+$80*4.w,a1
  402.         moveq.l    #(($1800+$80*4)-($1800+$50*4))/4-1,d0
  403. @@:        move.l    (a0)+,(a1)+
  404.         dbra    d0,@b
  405.         tst.l    (sp)
  406.         bmi    @f
  407.         DOS    __SUPER
  408. @@:        addq.l    #4,sp
  409. 9:        movem.l    (sp)+,SAVREGS
  410.         rts
  411.  
  412. *------------------------------------------------------------------------
  413. *    プロセスのメモリブロックを切り詰める
  414. *------------------------------------------------------------------------
  415. offmem:
  416. SAVREGS        reg    d0/a0-a1
  417.         movem.l    SAVREGS,-(sp)
  418.         lea.l    16(a0),a0
  419.         suba.l    a0,a1
  420.         pea.l    (a1)
  421.         pea.l    (a0)
  422.         DOS    __SETBLOCK
  423.         addq.l    #8,sp
  424.         movem.l    (sp)+,SAVREGS
  425.         rts
  426.  
  427. *------------------------------------------------------------------------
  428. *    MPUキャッシュのフラッシュ
  429. *        in:    none
  430. *        out:    none
  431. *        broken:    none
  432. *------------------------------------------------------------------------
  433. flushcache:
  434. SAVREGS        reg    d0/d1
  435.         movem.l    SAVREGS,-(sp)
  436.         moveq.l    #1,d0
  437.         .cpu    68020
  438.         and.b    *-3(pc,d0.w*2),d0
  439.         .cpu    68000
  440.         beq    @f
  441.         moveq.l    #3,d1        *flush
  442.         moveq.l    #$ac,d0        *SYS_STAT
  443.         trap    #15
  444. @@:        movem.l    (sp)+,SAVREGS
  445.         rts
  446.  
  447. *------------------------------------------------------------------------
  448. *    スプリアス割り込みを殺す
  449. *        in:    none
  450. *        out:    none
  451. *        broken:    none
  452. *------------------------------------------------------------------------
  453. setspint:
  454.         pea.l    vectwork(pc)
  455.         pea.l    chvecttbl(pc)
  456.         bsr    setvects
  457.         addq.l    #8,sp
  458.         rts
  459.  
  460. *------------------------------------------------------------------------
  461. *    スプリアス割り込みの復帰
  462. *        in:    none
  463. *        out:    none
  464. *        broken:    none
  465. *------------------------------------------------------------------------
  466. resetspint:
  467.         pea.l    vectwork(pc)
  468.         pea.l    chvecttbl(pc)
  469.         bsr    resetvects
  470.         addq.l    #8,sp
  471.         rts
  472.  
  473. *------------------------------------------------------------------------
  474. onlyrte:    rte
  475. *------------------------------------------------------------------------
  476. VECT        .macro    no,addr
  477.         .dc.w    no
  478. .if no.ne.0
  479.         .dc.l    addr
  480. .endif
  481.         .endm
  482. *------------------------------------------------------------------------
  483. chvecttbl:
  484.         VECT    $0018,onlyrte    *スプリアス割り込み
  485.         VECT    0,0
  486.  
  487. *------------------------------------------------------------------------
  488. *    割り込みベクタの書き換え
  489. *        in:    (sp).l    テーブル
  490. *            4(sp).l    ベクタセーブワーク
  491. *        out:    none
  492. *        broken:    none
  493. *        notice:    テーブルの形式は以下の通り
  494. *                .dc.w    vectno
  495. *                .dc.l    addr
  496. *                .dc.w    vectno
  497. *                    :
  498. *                .dc.w    0
  499. *------------------------------------------------------------------------
  500. setvects:
  501. SAVREGS        reg    d0/a0-a1
  502. SAVSIZ        =    (1+2)*4
  503.         movem.l    SAVREGS,-(sp)
  504.         movem.l    SAVSIZ+4(sp),a0-a1
  505.         bra    5f
  506. 1:        move.l    (a0)+,-(sp)
  507.         move.w    d0,-(sp)
  508.         DOS    __INTVCG
  509.         move.l    d0,(a1)+
  510.         DOS    __INTVCS
  511.         addq.l    #6,sp
  512. 5:        move.w    (a0)+,d0
  513.         bne    1b
  514.         movem.l    (sp)+,SAVREGS
  515.         rts
  516.  
  517. *------------------------------------------------------------------------
  518. *    setvectsで書き換えた割り込みベクタの復帰
  519. *        in:    (sp).l    テーブル
  520. *            4(sp).l    ベクタセーブワーク
  521. *        out:    none
  522. *        broken:    none
  523. *------------------------------------------------------------------------
  524. resetvects:
  525. SAVREGS        reg    d0/a0-a1
  526. SAVSIZ        =    (1+2)*4
  527.         movem.l    SAVREGS,-(sp)
  528.         movem.l    SAVSIZ+4(sp),a0-a1
  529.         bra    5f
  530. 1:        move.l    (a1)+,d1
  531.         beq    9f        *書き換え中に中断されたらしい
  532.         move.l    d1,-(sp)
  533.         move.w    d0,-(sp)
  534.         DOS    __INTVCS
  535.         addq.l    #6,sp
  536.         addq.l    #4,a0
  537. 5:        move.w    (a0)+,d0
  538.         bne    1b
  539. 9:        movem.l    (sp)+,SAVREGS
  540.         rts
  541. *------------------------------------------------------------------------
  542. puttitle:
  543.         pea.l    title(pc)
  544.         bra    tostdout
  545. tostdout:
  546.         DOS    __PRINT
  547.         addq.l    #4,sp
  548.         rts
  549.  
  550. *------------------------------------------------------------------------
  551. PATTBL        .macro    ofs
  552. .if ofs.ne.0
  553. _TMP2        =    ofs-1-64    *SIZEofXHEADER
  554.         .dc.w    _TMP2-_TMP
  555. _TMP        =    _TMP2
  556. .else
  557.         .dc.w    0
  558. .endif
  559.         .endm
  560. *------------------------------------------------------------------------
  561. patchtbl_a:
  562. _TMP    =    0
  563.         .include    pattbl_a.inc
  564.         PATTBL    0
  565.  
  566. *------------------------------------------------------------------------
  567. patchtbl_b:
  568. _TMP    =    0
  569.         .include    pattbl_b.inc
  570.         PATTBL    0
  571.  
  572. *------------------------------------------------------------------------
  573. dipsw:        .dc.b    %0000_0000,%1010_1101,%1000_0000
  574. salafn:        .dc.b    'SALA.X',0
  575. title:        .dc.b    'DINAMIC-PATCHER for 沙羅曼蛇 Copyright 1998 Igarashi'
  576.         .dc.b    $0d,$0a,0
  577. usgmes:        .dc.b    'usage:    bootsala [option]',$0d,$0a
  578.         .dc.b    '    -c<0-f>    クレジット設定',$0d,$0a
  579.         .dc.b    '    -t<0-1>    サウンドタイプ設定',$0d,$0a
  580.         .dc.b    '    -p<0-3>    残機数設定',$0d,$0a
  581.         .dc.b    '    -l<0-1>    コイン投入口設定',$0d,$0a
  582.         .dc.b    '    -x<0-3>    最大クレジット設定',$0d,$0a
  583.         .dc.b    '    -d<0-3>    難易度設定',$0d,$0a
  584.         .dc.b    '    -s<0-1>    デモサウンド設定',$0d,$0a
  585.         .dc.b    '    -o<0-1>    モニタ選択',$0d,$0a
  586.         .dc.b    '    -m<0-1>    テストモード選択',$0d,$0a
  587.         .dc.b    '    -g<0-3>    画面モード設定',$0d,$0a
  588. *        .dc.b    '    -v    謎のバージョンへの対応',$0d,$0a
  589.         .dc.b    'デフォルトは '
  590.         .dc.b    '-c0 -s0 -p1 -l1 -x1 -d1 -e0 -o0 -m1 -g0'
  591.         .dc.b    ' です',$0d,$0a,0
  592. nfoundmes:    .dc.b    'bootsala.x: SALA.Xが見つかりません',$0d,$0a,0
  593. vererrmes:    .dc.b    'bootsala.x: SALA.Xのバージョンが違います',$0d,$0a,0
  594. vererrmes2:    .dc.b    'bootsala.x: SALA.Xのバージョンが違うようです',$0d,$0a,0
  595. loaderrmes:    .dc.b    'bootsala.x: SALA.Xの起動に失敗しました',$0d,$0a,0
  596. execerrmes:    .dc.b    'bootsala.x: SALA.X実行中にエラーが発生しました',$0d,$0a,0
  597.  
  598. *========================================================================
  599.         .bss
  600.         .even
  601. vectwork:    .ds.l    1
  602. crtmode:    .ds.b    1
  603. version:    .ds.b    1
  604. extend:        .ds.b    1
  605. mfpbuf:        .ds.b    1
  606.  
  607. *========================================================================
  608.         .stack
  609.         .even
  610.  
  611.         .ds.l    256/4
  612. inisp:
  613.  
  614. *========================================================================
  615.         .end    entry
  616.  
  617.  
  618.